package com.ai.quartz.config;

import com.ai.quartz.Job.UserServiceJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class UserServiceQuartzConfig {

    /**
     * 配置一个作业细节对象，该对象代表了一个具体的作业实例。
     * 作业细节包括作业的名称、描述和其他属性。
     *
     * @return 返回一个配置好的作业细节对象。
     */
    @Bean
    public JobDetail jobDetail(){
        // 创建一个新的作业，指定作业的类为UserServiceJob
        return JobBuilder.newJob(UserServiceJob.class)
                // 为作业指定一个唯一的名称
                .withIdentity("任务名称：扫描用户列表")
                // 添加作业的描述信息
                .withDescription("描述：扫描用户列表")
                // 指定作业应该持久化存储，以便在系统重启后可以恢复
                .storeDurably()
                // 构建并返回作业细节对象
                .build();
    }


    /**
     * 创建一个触发器，用于定时触发作业。
     * <p>
     * 该方法定义了一个简单的触发器，它以5秒的间隔重复触发作业，直到作业完成或被显式停止。
     * 使用TriggerBuilder来构建触发器，并指定它应与通过jobDetail()方法定义的作业关联。
     * withSchedule方法指定了触发器的调度策略，即每隔5秒重复触发。
     *
     * @return 返回构建完成的触发器实例。
     */
    @Bean
    public Trigger trigger(){
        return TriggerBuilder.newTrigger()
                .forJob(jobDetail())
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5))
                .build();
    }
}
